// 下载express |  npm i express
//导入express
const express = require('express');
const cors = require('cors')
const user = require('./user/index')
// 导入my.js
const my = require('./user/my')
const expressJWT = require('express-jwt')


//搭建服务
const app = express();

// 中间件
app.use(function (req, res, next) {
    // status=1 失败  反则成功
    res.cc = function (err, status = 1) {
        res.send({
            status,
            message: err instanceof Error ? err.message : err
        })
    }
    next();
})


// 解决跨域问题- npm i cors
app.use(cors())
//  下载解析token 中间件 npm i express-jwt@5.3.3

// 解析前端传过来的数据格式
app.use(express.urlencoded({ extended: false }))
app.use(express.json())

const jwtSeccretKey = 'nihao No1. ^-^';

app.use(expressJWT({ secret: jwtSeccretKey }).unless({ path: [/^\/user\//] }))

app.use((req, res, next) => {
    res.header('Access-control-max-age', 1000) // 设置请求通过预检后多少时间内不再检验，减少预请求发送次数
    next()
})
// 例如  http://127.0.0.1:89/user/reguser
app.use('/user', user)
app.use('/my', my)
// 定义错误的中间件

app.use(function (err, req, res, next) {
    if (err.name === 'UnauthorizedError') return res.status(400).json({ success: false, message: "身份验证失败！", code: 10002 })
    if (err) res.cc(err)
})
app.listen(89, () => {
    console.log("http://127.0.0.1:/89");
})
//测试启动 | node app.js